/**
 *  (c)
 *
 *
 *
 *
 */

package com.nn.smart.bus.service;

import com.nn.smart.bus.commons.tools.page.PageData;
import com.nn.smart.bus.commons.tools.utils.Result;
import com.nn.smart.bus.dto.SysDictDTO;
import com.nn.smart.bus.dto.SysSimpleDictDTO;
import com.nn.smart.bus.dto.epdc.form.SysPopulationSimpleDictFormDTO;
import com.nn.smart.bus.dto.epdc.result.EpdcAppSysDictResultDTO;
import com.nn.smart.bus.dto.epdc.result.SysPopulationSimpleDictDTO;
import com.nn.smart.bus.entity.SysDictEntity;
import com.nn.smart.bus.commons.mybatis.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * 数据字典
 *
 * @author nanning
 * @since 1.0.0
 */
public interface SysDictService extends BaseService<SysDictEntity> {

    PageData<SysDictDTO> page(Map<String, Object> params);

    List<SysDictDTO> list(Map<String, Object> params);

    SysDictDTO get(Long id);

    void save(SysDictDTO dto);

    void update(SysDictDTO dto);

    void delete(Long[] ids);

    //根据pid获取下一级子列表
    List<SysDictDTO> subList(Map<String, Object> params);
    /**
     * 根据数据字典类型获取简版数据字典列表，用于页面下拉菜单
     *
     * @param dictType 数据字典类型
     * @return com.nn.smart.commons.tools.utils.Result<java.util.List < com.nn.smart.dto.SysSimpleDictDTO>>
     * @author nanning
     */
    Result<List<SysSimpleDictDTO>> listSimpleDictInfo(String dictType);

    /**
     * 根据ID删除
     *
     * @param id
     * @return void
     * @author nanning
     * @date 2019/7/15 10:14
     */
    void delete(Long id);

    /**
     * 根据数据字典类型获取详细数据字典列表
     *
     * @param dictType
     * @return com.nn.smart.bus.commons.tools.utils.Result<java.util.List<com.nn.smart.bus.dto.epdc.result.EpdcAppSysDictResultDTO>>
     * @author nanning
     * @since 2020/10/12 9:25
     */
    Result<List<EpdcAppSysDictResultDTO>> listFullDictInfo(String dictType);

    /**
     * @Description   根据数据字典类型获取简版数据字典列表，用于居民信息采集数据校验
     * @author nanning
     * @Param [dictType]
     * @return com.nn.smart.bus.commons.tools.utils.Result<java.util.List<com.nn.smart.bus.dto.SysSimpleDictDTO>>
     **/
    Result<List<SysPopulationSimpleDictDTO>> listPopulationSimple(SysPopulationSimpleDictFormDTO sysPopulationSimpleDictFormDTO);
}
